package com.cskaoyan.javase.oop1._8static._1basic;

/**
 * @description: 案例说明static原理
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

import jdk.nashorn.internal.codegen.CompilerConstants;

/**
 * 宠物公司新进了一批同样颜色的猫，创建一个类描述这批宠物
 * 注：创建该类时，给出一个静态成员变量和一个静态成员方法
 *
 * 静态成员和普通成员在内存中出现的时间肯定是: 静态成员一定在普通成员之前存在
 * 1,为什么静态成员方法中不能访问普通成员?
 *      因为根本就没有,类加载存在静态成员后不一定存在对象
 *      如果想要访问,必须要创建一个对象
 *
 * 2,普通成员方法中能否访问静态成员?
 *      一定是可以访问的,对象都存在了,一定类加载了,一定存在静态成员
 *
 * 3,为了区分静态成员变量和普通成员变量,建议在访问静态成员,加上类名,以示区分
 */
public class Demo {
    public static void main(String[] args) {
        //System.out.println(Cat.color);
        Cat c = new Cat();
        c.sleep('白');

        //Cat.eat();
        //Demo.test();

    }

    public static void test(){
        System.out.println("hello");
    }
}

class Cat{
    static char color = '橘';
    int age;

    //静态方法
    public static void eat(){
        System.out.println("吃猫粮");
        Cat c = new Cat();
        System.out.println(c.age);
    }
    public void sleep(char color){
        System.out.println("睡觉了!");
        System.out.println(Cat.color);
        Cat.eat();
    }
}